package cronTrigger;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class FirstJobScheduler {
	public static void main(String[] args) throws SchedulerException, InterruptedException {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
		Date date=new Date();
		System.out.println("start time:"+sdf.format(date));
		//1、创建JobDetail实例，该实例与FirstJob.class绑定,分组缺失则默认为default
		JobDetail jobDetail = JobBuilder
				.newJob(FirstJob.class)
				.withIdentity("firstJob", "group1")				
				.build();
		//2、创建一个Trigger实例
		//此group1分组和上group1分组不是同一个组；各自属于不同实例下的分组
		//每隔一秒执行一次：* * * ? * * *
		//2017年内每天10点15分执行一次：0 15 10 ? * * 2017
		//每天的14点整至14点59分55秒，以及18点整至18点59分55秒，每5秒钟触发一次：0-5 * 14,18 * * ?
		CronTrigger trigger=(CronTrigger) TriggerBuilder.newTrigger()
				.withIdentity("trigger", "group1")
				.startAt(date)
				.withSchedule(
					CronScheduleBuilder.cronSchedule("* * * ? * * *")
						)
				.build();
		SchedulerFactory sf=new StdSchedulerFactory();
		Scheduler scheduler=sf.getScheduler();
		scheduler.start();
		//3、传入两个实例执行
		scheduler.scheduleJob(jobDetail, trigger);
		//挂起后 ，3秒在开始会在当前时间一次执行三次任务（等待了3秒，设置的任务是每秒一次）
		Thread.sleep(5000L);
//		scheduler.standby();
//		Thread.sleep(3000L);
//		scheduler.start();
		scheduler.shutdown(true);//等所有任务执行完后再关闭。传入false,直接关闭
		
		
	}
}
